*** Making the Public Work:
*** Geography, Externalities, and Preferences for Mass Transit

*** Alisha C. Holland
*** November 2022
*** Stata/MP 17.0

*** Install needed packages 
ssc install coefplot
net install cleanplots, from("https://tdmize.github.io/data/cleanplots")
set scheme cleanplots, perm
ssc install estout
ssc install sutex

*** Use data 

*** use "MakingPublicWork.dta", clear

*** Cleaning and rescaling variables 

*** create dummy variable for control condition 
generate control = 1 if Treatment==0
replace control = 0 if Treatment ==1|Treatment ==2|Treatment==3

*** create dummy variable for property owner 
drop Owner
generate Owner =1 if PropertyType==1
replace Owner =0 if PropertyType>1 
replace Owner =. if PropertyType ==.

*** Rescale age, education, and expectations categories from 0 to 1
gen Age1 = (Age-1)/5
gen Ed1 = (Ed-1)/4
generate Traffic = MetroTraffic/3
generate Shorter = MetroShorter/3
generate Corruption = MetroCorruption/3

*** Generate dummies for proximity and interaction between proximity & ownership

generate close = 1 if AreaInfluence==1
replace close = 0 if AreaInfluence==0|AreaInfluence==2

generate closest = 1 if AreaInfluence==2
replace closest = 0 if AreaInfluence==0|AreaInfluence==1

generate influence = 1 if AreaInfluence==2|AreaInfluence==1
replace influence = 0 if AreaInfluence==0
generate closeowner = influence*Owner 

*** Create class groupings, poor as excluded category in regressions

generate lowermiddle = 1 if Strata ==3 
replace lowermiddle = 0 if Strata !=3
generate middle = 1 if Strata>3
replace middle = 0 if Strata <4
generate poor = 0 if Strata >2
replace poor = 1 if Strata <3

** Informal bus user
generate informal = .
replace informal = 1 if TransportType==4
replace informal = 0 if TransportType>4
replace informal = 0 if TransportType<4

** Car owner
generate carowner2 = .
replace carowner2 = 1 if TransportType<3
replace carowner2 = 0 if TransportType>2

** Public transit user, coding informal buses as nonpublic
generate public2 = .
replace public2 = 0 if TransportType==1|TransportType==2|TransportType==4
replace public2 = 0 if TransportType>5
replace public2 = 1 if TransportType ==3|TransportType==5

*** Reverse scale to make anti-gov attitudes
generate antigov = 0 if MoreGov==1
replace antigov=1 if MoreGov==0

*** Voted for Penalosa 
generate Penalosa2 =0
replace Penalosa2=1 if ChoiceMayor==1

*** Figures for Manuscript

*** Figure 2. Comparing Quadratic Voting and Likert Responses

*** Kernel density plot for metro resopnses 
kdensity qvnat_metro, bwidth(.8) scheme (s1mono) addplot (kdensity lik_metro, bwidth(.8)) legend(lwidth(none) label(1 "QV, N= 436") label(2 "Likert, N=375") order(1 2)) title("Metro") ytitle("Density") xtitle("Responses")graphregion(color(white) lcolor(white)) 
*** Kernel density plot for peace responses 
kdensity qvnat_peace, bwidth(.8) scheme (s1mono) addplot (kdensity lik_peace, bwidth(.8)) legend(lwidth(none) label(1 "QV, N= 436") label(2 "Likert, N=374") order(1 2)) title("Peace") ytitle("Density") xtitle("Responses")graphregion(color(white) lcolor(white)) 

*** Figure 4. Support for the Metro by Geography, Property Ownership, and Class 

label variable lowermiddle "Middle"
label variable middle "Upper"
label variable closeowner "Primary*Owner"

label variable close "Secondary"
label variable closest "Primary"

estimates clear 
reg qvcity_metro close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
estimates store C
coefplot (C, mcolor(black) msymbol(smcircle) pstyle(p4) lcolor(black)), drop(_cons) xline(0) xtitle("Coefficient Estimates") scheme(cleanplots) graphregion(fcolor(white)) plotregion(fcolor(white)) bgcolor(white) grid(none) legend(off)

*** Figure 5.  Conditional Average Treatment Effects by Class, Proximity, and Ownership

*** Build each component graph
*** Logrolling

estimates clear 
regress qvcity_metro compensation, robust 
estimates store All

regress qvcity_metro compensation close closest Owner Age1 Gender if Strata <3, robust 
estimates store Lower 

regress qvcity_metro compensation close closest Owner Age1 Gender if Strata>2 &Strata <5, robust 
estimates store Middle

regress qvcity_metro compensation close closest Owner Age1 Gender if Strata <4, robust 
estimates store Upper

regress qvcity_metro compensation lowermiddle middle Owner Age1 Gender if AreaInfluence==0, robust 
estimates store Unaffected

regress qvcity_metro compensation lowermiddle middle Owner Age1 Gender if AreaInfluence==1, robust 
estimates store Close

regress qvcity_metro compensation lowermiddle middle Owner Age1 Gender if AreaInfluence==2, robust 
estimates store Closest

reg qvcity_metro compensation lowermiddle middle close closest Age1 Gender if Owner==0, robust 
estimates store Renter

reg qvcity_metro compensation lowermiddle middle close closest Age1 Gender if Owner==1, robust 
estimates store Owner

coefplot  All || Lower || Middle || Upper || Unaffected || Close || Closest || Renter || Owner, drop(_cons lower lowermiddle middle close closest Owner Age1 Gender) xline(0) xscale(range(-1.5 (.25) 1.5)) bycoefs byopts(xrescale) horizontal group(1   = "{bf:ATE}" 2 3 4   = "{bf:Class}" 5 6 7  = "{bf:Proximity}" 8 9 = "{bf: Ownership}" , nogap angle(vertical)) title ("Logrolling") xtitle("Estimated Treatment Effects") pstyle(p4) mcolor(black) msymbol(smcircle)  xlabel(0, add) ytick(1.5 4.5 7.5, notick glstyle(refline) glcolor(gray) glpattern(dash) glwidth(*2))
graph save "logroll.gph", replace

*** Value Capture 

regress qvcity_metro valorization, robust 
estimates store All

regress qvcity_metro valorization close closest Owner Age1 Gender if Strata <3, robust 
estimates store Lower

regress qvcity_metro valorization close closest Owner Age1 Gender if Strata>2 &Strata <5, robust 
estimates store Middle

regress qvcity_metro valorization close closest Owner Age1 Gender if Strata <4, robust 
estimates store Upper

regress qvcity_metro valorization lowermiddle middle Owner Age1 Gender if AreaInfluence==0, robust 
estimates store Unaffected

regress qvcity_metro valorization lowermiddle middle Owner Age1 Gender if AreaInfluence==1, robust 
estimates store Close

regress qvcity_metro valorization lowermiddle middle Owner Age1 Gender if AreaInfluence==2, robust 
estimates store Closest

reg qvcity_metro valorization lowermiddle middle close closest Age1 Gender if Owner==0, robust 
estimates store Renter

reg qvcity_metro valorization lowermiddle middle close closest Age1 Gender if Owner==1, robust 
estimates store Owner

coefplot  All || Lower || Middle || Upper || Unaffected || Close || Closest || Renter || Owner, drop(_cons lower lowermiddle middle close closest Owner Age1 Gender) pstyle(p4) mcolor(black) msymbol(smcircle) xline(0) xscale(range(-1.5 (.25) 1.5)) bycoefs byopts(xrescale) horizontal group(1   = "{bf:ATE}" 2 3 4   = "{bf:Class}" 5 6 7  = "{bf:Proximity}" 8 9 = "{bf: Ownership}" , nogap angle(vertical)) title ("Value Capture") xtitle("Estimated Treatment Effects")  pstyle(p4) mcolor(black) msymbol(smcircle)  xlabel(0, add) ytick(1.5 4.5 7.5, notick glstyle(refline) glcolor(gray) glpattern(dash) glwidth(*2))
graph save "valuecap.gph", replace


*** Property Tax 

regress qvcity_metro propertytax, robust 
estimates store All

regress qvcity_metro propertytax close closest Owner Age1 Gender if Strata <3, robust 
estimates store Lower

regress qvcity_metro propertytax close closest Owner Age1 Gender if Strata>2 &Strata <5, robust 
estimates store Middle

regress qvcity_metro propertytax close closest Owner Age1 Gender if Strata <4, robust 
estimates store Upper

regress qvcity_metro propertytax lowermiddle middle Owner Age1 Gender if AreaInfluence==0, robust 
estimates store Unaffected

regress qvcity_metro propertytax lowermiddle middle Owner Age1 Gender  if AreaInfluence==1, robust 
estimates store Close

regress qvcity_metro propertytax lowermiddle middle Owner Age1 Gender if AreaInfluence==2, robust 
estimates store Closest

reg qvcity_metro propertytax lowermiddle middle close closest Age1 Gender if Owner==0, robust 
estimates store Renter

reg qvcity_metro propertytax lowermiddle middle close closest Age1 Gender if Owner==1, robust 
estimates store Owner
coefplot  All || Lower || Middle || Upper || Unaffected || Close || Closest || Renter || Owner, drop(_cons lower lowermiddle middle close closest Owner Age1 Gender) xline(0) xscale(range(-1.5 (.25) 1.5)) bycoefs byopts(xrescale) horizontal group(1   = "{bf:ATE}" 2 3 4   = "{bf:Class}" 5 6 7  = "{bf:Proximity}" 8 9 = "{bf: Ownership}" , nogap angle(vertical)) title ("Property Tax") xtitle("Estimated Treatment Effects") pstyle(p4) mcolor(black) msymbol(smcircle)  xlabel(0, add) ytick(1.5 4.5 7.5, notick glstyle(refline) glcolor(gray) glpattern(dash) glwidth(*2))
graph save "propertytax.gph", replace

*** Rush Hour 

set scheme cleanplots

regress qvcity_metro rushhour, robust 
estimates store All

regress qvcity_metro rushhour, robust 
estimates store All

regress qvcity_metro rushhour close closest Owner Age1 Gender if Strata>2 &Strata <5, robust 
estimates store Lower

regress qvcity_metro rushhour close closest Owner Age1 Gender if Strata <3, robust 
estimates store Middle

regress qvcity_metro rushhour close closest Owner Age1 Gender if Strata <4, robust 
estimates store Upper

regress qvcity_metro rushhour lowermiddle middle Owner Age1 Gender  if AreaInfluence==0, robust 
estimates store Unaffected

regress qvcity_metro rushhour lowermiddle middle Owner Age1 Gender  if AreaInfluence==1, robust 
estimates store Close

regress qvcity_metro rushhour lowermiddle middle Owner Age1 Gender if AreaInfluence==2, robust 
estimates store Closest

reg qvcity_metro rushhour lowermiddle middle close closest Age1 Gender  if Owner==0, robust 
estimates store Renter

reg qvcity_metro rushhour lowermiddle middle close closest Age1 Gender if Owner==1, robust 
estimates store Owner

coefplot  All || Lower || Middle || Upper || Unaffected || Close || Closest || Renter || Owner, drop(_cons lower lowermiddle middle close closest Owner Age1 Gender) xline(0) xscale(range(-1.5 (.25) 1.5)) bycoefs byopts(xrescale) horizontal group(1   = "{bf:ATE}" 2 3 4   = "{bf:Class}" 5 6 7  = "{bf:Proximity}" 8 9 = "{bf: Ownership}" , nogap angle(vertical)) title ("Rush Hour") xtitle("Estimated Treatment Effects") pstyle(p4) mcolor(black) msymbol(smcircle)   xlabel(0, add) ytick(1.5 4.5 7.5, notick glstyle(refline) glcolor(gray) glpattern(dash) glwidth(*2))
graph save "rushhour.gph", replace

*** Put together the graphs 
graph combine logroll.gph valuecap.gph propertytax.gph rushhour.gph,  scheme(cleanplots) iscale(0.55) xcommon ycommon col(2) imargin(tiny)  


***  Table 1. The Choice Set for National and City Issues

*** Rename labels for table output 

label variable qvnat_metro "National Metro. Build a metro in Bogotá."
label variable qvcity_metro "City Metro. Build a metro in Bogotá."
label variable qvnat_corruption "National Corruption. Ban elected officials who mismanage resources from public service."
label variable qvcity_corruption "City Corruption. Ban elected officials who mismanage resources from public service." 
label variable qvnat_spend "National Social spending. Increase spending on public education and hospitals."
label variable qvcity_healthed "City Social spending. Increase spending on public education and hospitals."
label variable qvnat_highway "National Highways. Build the 4g Highway Projects."
label variable qvcity_roads "City Roads. Build new city road infrastructure."
label variable qvnat_taxes "National Income Taxes. Increase income taxes."
label variable qvcity_taxes "City Property Taxes. Increase property taxes."
label variable qvnat_death "National Death Penalty. Establish the death penalty."
label variable qvcity_crime "City Crime. Regular operations to break up criminal gangs and stop petty criminals."
label variable qvnat_poverty "National CCT increases. Increase cash transfer assistance to poor families."
label variable qvnat_abortion "National Abortion. National ban on abortion in nearly all circumstances."
label variable qvcity_vendors "City Vendors. Remove street vendors from public spaces."
label variable qvnat_peace "National Peace. Sign the peace accord with the FARC."
label variable qvcity_envir "City Environment. Conserve the city's water system."
label variable qvnat_rural "National Rural. Provide property titles and crop assistance to farmers." 
label variable qvcity_housing "City Housing. Construct more social interest 

*** Matched Issues: Metro, Corruption, and Social spending
table, statistic(mean qvnat_metro qvcity_metro qvnat_corruption qvcity_corruption qvnat_spend qvcity_healthed) nformat(%9.1f)

*** Related Issues: Highways and Roads, Income Taxes and Property Taxes, Death Penalty and Crime, and CCT Increases and Transfer Increases
*** Recode the city question to be framed in terms of transfer increases 
gen qvcity_povspend = qvcity_poverty * -1
label variable qvcity_povspend "City Transfer increases. Increase family and nutritional assistance to poor families."
table, statistic(mean qvnat_highway qvcity_roads qvnat_taxes qvcity_taxes qvnat_death qvcity_crime qvnat_poverty qvcity_povspend) nformat(%9.1f)

*** Jurisdiction Specific Issues: Abortion and Street Vendors, Peace and Environment, and Rural and Housing 
table, statistic(mean qvnat_abortion qvcity_vendors qvnat_peace qvcity_envir qvnat_rural qvcity_housing) nformat(%9.1f)

***  Table 2. Comparing Models of Support for the Metro 

*** Remove the redistributive issues (poverty, taxes, health & education)
generate scalingfactor = 10/(sqrt(qvcity_metro^2 + qvcity_vendors^2 + qvcity_corruption^2 +qvcity_envir^2 +qvcity_crime^2 + qvcity_housing^2 + qvcity_roads^2))
*** then use that scaling factor to reweight each issue 
generate scaledmetro_nomat = scalingfactor * qvcity_metro

** Change sign on transfers so all support for more poverty relief
generate qvcity_povrelief = qvcity_poverty *-1 
*** Redistribution votes: combine property taxes, transfers, and social assistance 
generate qvcity_redis = qvcity_taxes+ qvcity_povrelief + qvcity_healthed

eststo clear
eststo, title("Model 1"): quietly reg qvcity_metro close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 2"): quietly reg lik_metro close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 3"): quietly reg qvcity_redis close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 4"): quietly reg Redistribution close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 5"): quietly reg scaledmetro_nomat close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 6"): quietly reg qvcity_roads close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
esttab using Table2Comp.tex, b(3) se(2) obslast  stats(r2, fmt(3) label(R^2)) keep(close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender) mtitles("QV Metro" "Likert Metro" "QV Redis" "Likert Redis" "Scaled Metro" "QV Highway") nonotes compress label replace 


*** Table 3. Effect of Experimental Treatments on Support for the Metro

eststo clear

eststo, title("Model 1"): quietly regress qvcity_metro valorization, robust
eststo, title("Model 2"): quietly regress qvcity_metro valorization  close closest Owner lowermiddle middle Age1 Gender, robust 

eststo, title("Model 3"): quietly regress qvcity_metro compensation , robust 
eststo, title("Model 4"): quietly regress qvcity_metro compensation  close closest Owner lowermiddle middle Age1 Gender, robust 
 
eststo, title("Model 1"): quietly regress qvcity_metro propertytax, robust 
eststo, title("Model 1"): quietly regress qvcity_metro propertytax close closest Owner lowermiddle middle Age1 Gender, robust 

eststo, title("Model 1"): quietly regress qvcity_metro rushhour, robust 
eststo, title("Model 1"): quietly regress qvcity_metro rushhour close closest Owner lowermiddle middle Age1 Gender, robust 

esttab using ExperimentTable3a.tex, b(3) se(2) obslast stats(N r2 , fmt(0 3) label(N R^2)) keep(valorization compensation propertytax rushhour) star(* 0.1 ** 0.05 *** 0.01) nomtitles mgroups("Value Capture" "Logrolling" "Property Tax" "Rush Hour", pattern(1 0 1 0 1 0 1 0) span prefix(\multicolumn{@span}{c}{)suffix(})) nonotes compress replace

**** Appendix

*** Table A.1. Expectations for the Subway Project 

g expectshorter =1 if MetroShorter>1
replace expectshorter=0 if MetroShorter<2 
replace expectshorter= . if MetroShorter ==. 

g expectstart =1 if MetroStarted>1
replace expectstart =0 if MetroStarted<2 
replace expectstart = . if MetroStarted ==. 

g expecttraffic =1 if MetroTraffic>1
replace expecttraffic =0 if MetroTraffic<2 
replace expecttraffic = . if MetroTraffic ==. 

g expecttax =1 if MetroTax>1
replace expecttax =0 if MetroTax<2 
replace expecttax = . if MetroTax ==. 

g expectprop =1 if MetroProperty>1
replace expectprop =0 if MetroProperty<2 
replace expectprop = . if MetroProperty ==. 

g expectcorr =1 if MetroCorruption>1
replace expectcorr =0 if MetroCorruption<2 
replace expectcorr = . if MetroCorruption ==. 

sutex expectshorter expecttraffic expectprop expectstart expectcorr expecttax 

*** Table A.2. Class Comparisons in Bogota

generate classgroups = 1 if Strata <3
replace classgroups = 2 if Strata ==3 | Strata ==4
replace classgroups = 3 if Strata >4

tab AreaInfluence classgroups

*** Table A.3 Descriptive Statistics

** Change sign on transfers so all support for more poverty relief
generate qvcity_povrelief = qvcity_poverty *-1 

generate propertyup = 1 if MetroProperty==3
replace propertyup =0 if MetroProperty<3
replace propertyup=. if MetroProperty==.
label variable propertyup "Property Up"

generate ownerup = propertyup*Owner 

sutex qvnat_metro qvnat_peace lik_metro lik_peace qvcity_metro qvcity_roads qvcity_povrelief qvcity_healthed qvcity_taxes qvcity_vendors qvcity_corruption Redistribution close closest lower middle Traffic Shorter Owner Age1 Gender PropertyTaxPaid IncomeTax Betterment propertyup carowner2 public2 informal antigov Corruption Penalosa2, minmax

*** Table A.4. Balance Tests 

** Check for balance on pre-treatment covariates
*** T Tests for class, gender, age, property ownership, influence area
ttest Strata, by(rushhour) unequal
ttest PropertyType, by(rushhour) unequal
ttest AreaInfluence, by(rushhour) unequal
ttest Gender, by(rushhour) unequal
ttest Age, by(rushhour) unequal
reg rushhour Strata Gender Age PropertyType AreaInfluence

*** Property Tax versus control
ttest Strata, by(propertytax) unequal
ttest PropertyType, by(propertytax) unequal
ttest AreaInfluence, by(propertytax) unequal
ttest Gender, by(propertytax) unequal
ttest Age, by(propertytax) unequal
reg propertytax Strata Gender Age PropertyType AreaInfluence

*** Logrolling versus control
ttest Strata, by(compensation) unequal
ttest PropertyType, by(compensation) unequal
ttest AreaInfluence, by(compensation) unequal
ttest Gender, by(compensation) unequal
ttest Age, by(compensation) unequal
reg compensation Strata Gender Age PropertyType AreaInfluence

*** Valorization versus control
ttest Strata, by(valorization) unequal
ttest PropertyType, by(valorization) unequal
ttest AreaInfluence, by(valorization) unequal
ttest Gender, by(valorization) unequal
ttest Age, by(valorization) unequal

reg valorization Strata Gender Age PropertyType AreaInfluence

*** F statistc is not significant, Prob > F =     0.7185
reg Treatment Strata Gender Ed PropertyType AreaInfluence

*** Table A.5. Alternative Explanations Based on Proprety Ownership, Transit Use, and Government Attitudes  

*** Labeling variables for table output 
label variable Age1 "Age"
label variable ownerup "Property Up*Owner"
label variable carowner2 "Car"
label variable public2 "Public Transit"
label variable informal "Informal Transit"
label variable antigov "Anti-Government"
label variable Penalosa2 "Mayor Vote"

eststo clear
eststo, title("Model 1"): quietly reg propertyup close closest if Owner==1 , robust
eststo, title("Model 2"): quietly reg qvcity_metro close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender propertyup, robust
eststo, title("Model 3"): quietly reg qvcity_metro close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender propertyup ownerup, robust
eststo, title("Model 4"): quietly reg qvcity_roads  lowermiddle middle Traffic Shorter close closest Owner closeowner carowner2 public2 informal Age1 Gender, robust
eststo, title("Model 5"): quietly reg qvcity_metro lowermiddle middle Traffic Shorter close closest Owner closeowner Age1 Gender antigov Corruption Penalosa2, robust
esttab using TableA5.tex, b(3) se(2) obslast  stats(r2, fmt(3) label(R^{2})) keep(close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender propertyup ownerup carowner2 public2 informal antigov Corruption Penalosa2) mtitles("Property Up" "QV Metro" "QV Metro" "QV Metro" "QV Metro") label nonotes replace

*** Table A.6  Class Cleavages Across the Choice Set 

*** Create scaling factors for alternative issues that divide class groups
** alternative divisive issues, vending

generate scalingfactor3 = 10/(sqrt(qvcity_metro^2 + qvcity_taxes^2 + qvcity_corruption^2 +qvcity_envir^2 +qvcity_crime^2 + qvcity_housing^2 + qvcity_roads^2 + qvcity_healthed^2 + qvcity_poverty^2))
generate scaled_novendors = scalingfactor3 * qvcity_metro
** alternative divisive issues, corruption
generate scalingfactor4 = 10/(sqrt(qvcity_metro^2 + qvcity_taxes^2 + qvcity_vendors^2 +qvcity_envir^2 +qvcity_crime^2 + qvcity_housing^2 + qvcity_roads^2 + qvcity_healthed^2 + qvcity_poverty^2))
generate scaled_nocorrup  = scalingfactor4 * qvcity_metro

eststo clear
eststo, title("Model 1"): quietly reg qvcity_povrelief close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 2"): quietly reg qvcity_healthed close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 3"): quietly reg qvcity_taxes close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 4"): quietly reg qvcity_vendors close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 5"): quietly reg qvcity_corruption close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 6"): quietly reg scaled_novendors close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust
eststo, title("Model 7"): quietly reg scaled_nocorrup close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender, robust

esttab using TableA6.tex, b(3) se(2) obslast stats(r2, fmt(3) label(R^{2})) keep(close closest Owner closeowner lowermiddle middle Traffic Shorter Age1 Gender)  mtitles("QV Transfers" "QV Social" "QV Tax" "QV Vendor" "QV Corrupt" "No Vendor" "No corrupt") label nonotes replace
 
 